SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE  Procedure [dbo].[SP_TCMOVI_CAJA_D03]      
/*-------------------------------------------------------*/      
/*---Empresa              : OFISIS S.A.                --*/      
/*---Cliente              : OFISIS                 --*/      
/*---Sistema              : Tesoreria                  --*/      
/*---M÷dulo               : Empresa                    --*/      
/*---Programa             : Borrado de Operaci¸n       --*/      
/*---                       Movimiento Caja   (Egresos)--*/      
/*---                       Transferencia entre Caja   --*/      
/*---Script               : tcmovi_b.sql               --*/      
/*---Nombre SP            : SP_TCMOVI_CAJA_D03         --*/      
/*---Desarrollado por     : Javier Flores A.           --*/      
/*---Fecha Creaci÷n       : 04/07/1999                 --*/      
/*---Base Datos           : Microsoft Sql Server       --*/      
/*---Versi÷n              : 7.0                        --*/      
/*---Invoca a SP          :                            --*/      
/*-------------------------------------------------------*/      
      
/*-------------------------------------------------------*/        
/*---ModIficado 1 por     :Maribel Julca Rodriguez     --*/        
/*---Fecha ModIficaci,n   :22/01/2005                  --*/         
/*---Detalle ModIficaci,n :ingreso de campos CO_USUA_CREA, CO_USUA_MODI --*/        
/*-------------------------------------------------------*/        
      
/*-------------------------------------------------------*/      
/*---Comentarios                                       --*/      
/*---                                                  --*/      
/*---                                                  --*/      
/*-------------------------------------------------------*/      
      
/*-------------------------------------------------------*/      
/*---Drop Proc SP_TCMOVI_CAJA_D03                      --*/      
/*---Grant all on SP_TCMOVI_CAJA_D03 to public         --*/       
/*---SP_TCMOVI_CAJA_D03                                --*/      
/*-------------------------------------------------------*/      
 @ISCO_EMPR TD_VC_002,       
 @ISCO_USUA_MODI TD_VC_008_USUA,      
 @ISCO_CAJA TD_VC_008,       
 @ISAA_CAJA TD_VC_004,       
 @ISMM_CAJA TD_VC_002,       
 @ISTI_MOVI TD_VC_001,        
 @ISNU_COMP_CAJA TD_VC_008,      
 @ISCO_TIPO_OPER TD_VC_003,       
 @INIM_MOVI TD_NU_016_004,      
 @IDFE_ANUL TD_DT_001,      
 @ISDE_OBSE TD_VC_100,      
 @ISNU_SOLI TD_VC_010      
 as       
      
 Declare       
 @CNIM_CONV TD_NU_016_004,       
 @CSCO_EMPR_DEST TD_VC_002,       
 @CSCO_CAJA_DEST TD_VC_008,       
 @CSAA_CAJA_DEST TD_VC_004,       
 @CSMM_CAJA_DEST TD_VC_002,       
 @CSTI_MOVI_DEST TD_VC_001,       
 @CSNU_COMP_DEST TD_VC_008,      
 @CSCO_TIPO_OPER TD_VC_003,      
 @VSCO_TIPO_INAN TD_VC_003,      
 @VSCO_TIPO_EGAN TD_VC_003,         
 @VSST_GEAS_ANUL TD_VC_001,      
 @VSCO_TIPO_OPE1 TD_VC_003,      
 @VSCO_TIPO_OPE2 TD_VC_003,      
  
/* a) Variables de extorno */      
 @VSCO_UNID_CONC TD_VC_003,    
 @VDFE_OPER  TD_DT_001,        
 @OSNU_ASTO  TD_VC_010,          
 @VSST_INTE_BACH TD_VC_001,      
 @VSST_ASTO_RESU TD_VC_001,     
 @VSTI_OPNI_CARG TD_VC_001,    
 @VSTI_OPNI_ABON TD_VC_001     
      
 BEGIN TRAN SP_TCMOVI_CAJA_D03      
      
   SELECT @VSCO_TIPO_INAN = CO_TIPO_OPER, @VSCO_TIPO_EGAN = CO_TIPO_OPEG, @VSST_GEAS_ANUL = ST_GEAS_ANUL,  
          @VSTI_OPNI_CARG = CO_TIPO_OPEG, @VSTI_OPNI_ABON = CO_TIPO_OPER , @VSST_INTE_BACH = ST_INTE_BACH          
   FROM   TMPARA_TESO       
   WHERE  CO_EMPR = @ISCO_EMPR   
  
-- Se optiene la fecha de operacion para --E X T O R N O--  --   
   Select @VDFE_OPER = FE_OPER,      
          @VSCO_UNID_CONC = CO_UNID_CONC      
   From   TCMOVI_CAJA          
   Where  CO_EMPR = @ISCO_EMPR          
         And    CO_CAJA = @ISCO_CAJA          
         And    AA_CAJA = @ISAA_CAJA          
         And    MM_CAJA = @ISMM_CAJA          
         And    TI_MOVI = @ISTI_MOVI          
         And    NU_COMP_CAJA = @ISNU_COMP_CAJA            
   
      
   If @VSST_GEAS_ANUL = 'N'      
      Select @VSCO_TIPO_OPE1 = @VSCO_TIPO_EGAN      
   Else          
     Select @VSCO_TIPO_OPE1 = @ISCO_TIPO_OPER      
      
-- Si la Fecha de Anulacion es Mayor --E X T O R N O--  --   
     
   If  @VDFE_OPER < @IDFE_ANUL And Month( @VDFE_OPER ) != Month( @IDFE_ANUL )      
   
    Update  TCMOVI_CAJA      
    Set     TI_SITU = 'EXT',       
            DE_OBSE = @ISDE_OBSE,      
            CO_TIPO_OPER = @VSCO_TIPO_OPE1,      
            CO_USUA_MODI = @ISCO_USUA_MODI,      
            FE_USUA_MODI = GETDATE()      
    Where   CO_EMPR = @ISCO_EMPR        
    And     CO_CAJA = @ISCO_CAJA      
    And     AA_CAJA = @ISAA_CAJA      
    And     MM_CAJA = @ISMM_CAJA      
    And     TI_MOVI = @ISTI_MOVI      
    And     NU_COMP_CAJA = @ISNU_COMP_CAJA    
    
   Else  
  
    Update  TCMOVI_CAJA      
    Set     TI_SITU = 'ANU',       
            DE_OBSE = @ISDE_OBSE,      
            CO_TIPO_OPER = @VSCO_TIPO_OPE1,      
            CO_USUA_MODI = @ISCO_USUA_MODI,      
            FE_USUA_MODI = GETDATE()      
    Where   CO_EMPR = @ISCO_EMPR        
    And     CO_CAJA = @ISCO_CAJA      
    And     AA_CAJA = @ISAA_CAJA      
    And     MM_CAJA = @ISMM_CAJA      
    And     TI_MOVI = @ISTI_MOVI      
    And     NU_COMP_CAJA = @ISNU_COMP_CAJA      
      
   If @@error <> 0      
      Begin      
        Rollback Tran      
        Return      
      End     
   
           
/* Actualizando la Tabla de Solicitudes a Caja a Situaci©n APROBADAS */      
      
    Update TMSOLI_CABA      
    Set TI_SITU = 'APR', FE_LIQU = NULL,       
        CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = getdate()               
    Where CO_EMPR = @ISCO_EMPR      
       And   NU_SOLI = @ISNU_SOLI      
      
    If @@error <> 0      
       Begin      
         Rollback tran      
         Return      
       End        
      
    Declare CU_TCMOVI_CAJA_D03_1 Cursor      
    For      
    Select CO_EMPR_DEST, CO_CAJA_DEST, AA_CAJA_DEST, MM_CAJA_DEST, TI_MOVI_DEST,      
           NU_COMP_DEST, IM_CONV, CO_TIPO_OPER      
    From   TDMOVI_TRCA      
    Where  CO_EMPR = @ISCO_EMPR      
    And    CO_CAJA = @ISCO_CAJA      
    And    AA_CAJA = @ISAA_CAJA      
    And    MM_CAJA = @ISMM_CAJA      
    And    TI_MOVI = @ISTI_MOVI      
    And    NU_COMP_CAJA = @ISNU_COMP_CAJA      
      
    Open CU_TCMOVI_CAJA_D03_1      
    Fetch CU_TCMOVI_CAJA_D03_1 into @CSCO_EMPR_DEST, @CSCO_CAJA_DEST, @CSAA_CAJA_DEST,       
    @CSMM_CAJA_DEST, @CSTI_MOVI_DEST, @CSNU_COMP_DEST, @CNIM_CONV, @CSCO_TIPO_OPER      
      
    While (@@FETCH_STATUS = 0)      
      Begin      
        If (@@FETCH_STATUS < 0)      
           Begin      
        RAISERROR 20001 'FIN DE ARCHIVO'      
              Close CU_TCMOVI_CAJA_D03_1      
        Deallocate CU_TCMOVI_CAJA_D03_1      
              Rollback tran      
        Return      
           End      
      
      
      
       If @VSST_GEAS_ANUL = 'N'      
            Select @VSCO_TIPO_OPE2 = @VSCO_TIPO_INAN      
       Else          
        Select @VSCO_TIPO_OPE2 = @CSCO_TIPO_OPER      
      
   -- Si la Fecha de Anulacion es Mayor --E X T O R N O--  --   
     
       If  @VDFE_OPER < @IDFE_ANUL And Month( @VDFE_OPER ) != Month( @IDFE_ANUL )      
   
     Update  TCMOVI_CAJA      
     Set     TI_SITU = 'EXT',       
             CO_TIPO_OPER = @VSCO_TIPO_OPE2,      
             DE_OBSE = @ISDE_OBSE+' '+DE_OBSE,      
             CO_USUA_MODI = @ISCO_USUA_MODI,      
             FE_USUA_MODI = GETDATE()      
     Where  CO_EMPR = @CSCO_EMPR_DEST      
          And    CO_CAJA = @CSCO_CAJA_DEST      
          And    AA_CAJA = @CSAA_CAJA_DEST       
          And    MM_CAJA = @CSMM_CAJA_DEST      
          And    TI_MOVI = 'I'      
          And    NU_COMP_CAJA = @CSNU_COMP_DEST    
  
      Else  
  
     Update  TCMOVI_CAJA      
     Set     TI_SITU = 'ANU',       
             CO_TIPO_OPER = @VSCO_TIPO_OPE2,      
             DE_OBSE = @ISDE_OBSE+' '+DE_OBSE,      
             CO_USUA_MODI = @ISCO_USUA_MODI,      
             FE_USUA_MODI = GETDATE()      
     Where  CO_EMPR = @CSCO_EMPR_DEST      
          And    CO_CAJA = @CSCO_CAJA_DEST      
          And    AA_CAJA = @CSAA_CAJA_DEST       
          And    MM_CAJA = @CSMM_CAJA_DEST      
          And    TI_MOVI = 'I'      
          And    NU_COMP_CAJA = @CSNU_COMP_DEST      
       
    If @@error <> 0      
            Begin      
               Close CU_TCMOVI_CAJA_D03_1      
      Deallocate CU_TCMOVI_CAJA_D03_1      
               rollback tran      
         return      
            End      
      
         UPDATE TDMOVI_TRCA   
         SET CO_TIPO_OPER = @VSCO_TIPO_OPE2      
         WHERE CURRENT OF CU_TCMOVI_CAJA_D03_1    
  
  
 /**-----Verifica si se genera asientos Resumidos ------*/         
  Select @VSST_ASTO_RESU = Max(IsNull( t1.ST_ASTO_RESU, 'S'))              
  From   TMOPRC_RESU t1 , TDTIPO_OPER t2              
  Where  t2.CO_EMPR = @ISCO_EMPR And              
  t2.CO_TIPO_OPER = @ISCO_TIPO_OPER And              
  t1.CO_EMPR = t2.CO_EMPR And              
  t1.CO_OPRC_CNTB = t2.CO_OPRC_CNTB         
       
 /**-----Fin de la Validacion de Asientos Resumidos e Interfase en Bach ------*/         
  If @VSST_INTE_BACH = 'N' AND @VSST_ASTO_RESU = 'N' AND        
     @ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON And        
     @VDFE_OPER < @IDFE_ANUL And Month( @VDFE_OPER ) != Month( @IDFE_ANUL )        
  Begin        
 /*-----Optiene el Numero de Asiento -----*/            
    EXEC SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @VSCO_UNID_CONC, @VSCO_TIPO_OPE1, @IDFE_ANUL, @OSNU_ASTO OUTPUT          
    IF (@@ERROR != 0)              
    Begin          
      RollBack Tran  SP_TTAMAR_NCCA_D01        
      Return          
    End         
       
  End              
 /**/           
       
      
         Insert into TTCAJA_ANUL (CO_EMPR, CO_CAJA, AA_CAJA, MM_CAJA, TI_MOVI, NU_COMP_CAJA,       
                     CO_TIPO_OPER, FE_ANUL, NU_ASTO, ST_CONT, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)      
         Values (@CSCO_EMPR_DEST, @CSCO_CAJA_DEST, @CSAA_CAJA_DEST, @CSMM_CAJA_DEST, @CSTI_MOVI_DEST,       
                 @CSNU_COMP_DEST, @VSCO_TIPO_OPE2,  @IDFE_ANUL, @OSNU_ASTO, 'N', @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())      
      
    If @@error <> 0      
       Begin      
               Close CU_TCMOVI_CAJA_D03_1      
         Deallocate CU_TCMOVI_CAJA_D03_1      
               rollback tran      
         return      
       End      
      
         Fetch CU_TCMOVI_CAJA_D03_1 into @CSCO_EMPR_DEST, @CSCO_CAJA_DEST, @CSAA_CAJA_DEST,       
               @CSMM_CAJA_DEST, @CSTI_MOVI_DEST, @CSNU_COMP_DEST, @CNIM_CONV, @CSCO_TIPO_OPER      
    End       
      
    Close CU_TCMOVI_CAJA_D03_1      
    deallocate CU_TCMOVI_CAJA_D03_1     
  
  
      
  
    Insert into TTCAJA_ANUL (CO_EMPR, CO_CAJA, AA_CAJA, MM_CAJA, TI_MOVI, NU_COMP_CAJA,       
    CO_TIPO_OPER, FE_ANUL, NU_ASTO, ST_CONT, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)      
    Values (@ISCO_EMPR, @ISCO_CAJA, @ISAA_CAJA, @ISMM_CAJA, @ISTI_MOVI, @ISNU_COMP_CAJA,       
            @VSCO_TIPO_OPE1,  @IDFE_ANUL, @OSNU_ASTO, 'N', @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())      
      
    If @@error <> 0      
       Begin      
         Rollback tran      
         Return      
       End      
      
 Commit Tran      
      
/*------------------------- Fin ------------------------------*/


GO
